package com.ybkj.o2o.mc.mapper;


import com.ybkj.o2o.mc.common.query.EnterpriseQuery;
import com.ybkj.o2o.mc.entity.Enterprise;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EnterpriseMapper {
  /**
   * 修改企业金额信息.
   *
   * @param record 企业信息
   * @return 受影响行数
   */
  int updateBalance(Enterprise record);

  /**
   * 根据名称和系统key查询企业信息.
   *
   * @param name   名称
   * @param appKey 系统key
 * @param companyId 
 * @param companyId 
   * @return 企业信息
   */
  Enterprise findByNameAndAppkey(@Param("name") String name, @Param("appKey") String appKey,@Param("companyId") Long companyId);

  /**
   * 保存企业基本信息.
   *
   * @param enterprise 企业信息
   * @return 企业信息
   */
  int insert(Enterprise enterprise);

  /**
   * 根据主键和系统key查询企业信息.
   *
   * @param enterpriseId 企业主键
   * @param appKey       系统key
   * @return 企业信息
   */
  Enterprise selectByIdAndAppKey(@Param("enterpriseId") Long enterpriseId,
                                 @Param("appKey") String appKey);

  /**
   * 根据主键修改企业基本信息.
   *
   * @param enterprise 企业信息
   * @return 受影响行数
   */
  int updateByPrimaryKey(Enterprise enterprise);

  /**
   * 根据主键和系统key删除企业信息.
   *
   * @param enterpriseId 企业主键
   * @param appKey       系统key
   * @return 受影响行数
   */
  int deleteByPrimaryKey(@Param("enterpriseId") Long enterpriseId,
                         @Param("appKey") String appKey);

  /**
   * 根据条件分页查询企业信息.
   *
   * @param enterpriseQuery 查询条件
   * @return 企业信息列表
   */
  List<Enterprise> selectByEnterpriseQuery(EnterpriseQuery enterpriseQuery);

  /**
   * 根据条件统计企业数量.
   *
   * @param enterpriseQuery 查询条件
   * @return 企业数量
   */
  Long countByEnterpriseQuery(EnterpriseQuery enterpriseQuery);

  /**
   * 根据主键查询企业信息.
   *
   * @param id 企业主键
   * @return 企业信息
   */
  Enterprise selectByPrimaryKey(Long id);

  int updateCompanyName(@Param("companyId")Long companyId,
                        @Param("abbreviation")String abbreviation,
                        @Param("appKey")String appKey);

  List<Enterprise> findByGradeId(@Param("gradeId") Long gradeId, @Param("appKey") String appKey);

  int batchUpdateGrade(@Param("gradeId") Long gradeId, @Param("appKey") String appKey);

  int disposeGrade(@Param("gradeId") Long gradeId, @Param("gradeName") String gradeName,
                   @Param("companyId") Long companyId, @Param("appKey") String appKey);
}
